﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using BolsaTalentos.BLL;

namespace InterfazBolsaTalentos.Empresa
{
    public partial class Aplicaciones : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.PoblarGridViewVacantesActivas();
        }

        private void PoblarGridViewVacantesActivas()
        {
            var VacantesActivasSource = from v in ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).EmpresaProcedencia.Vacantes
                                        where v.SiActiva == true
                                        select new
                                        {
                                            ID = v.ID,
                                            Carrera = v.Carrera.Descripcion,
                                            FechaPublicacion = v.FechaPublicacion,
                                            Descripcion = v.Descripcion
                                        };

            if (VacantesActivasSource.Count() == 0)
            {
                //Lo ideal seria poner la propiedad Visible = true. pero asp se pajarea
                this.Label_MensajeErrorNoVacantesActivas.Visible = true;
            }
            else
            {
                this.Label_MensajeErrorNoVacantesActivas.Visible = false;
            }

            this.GridView_VacantesActivas.DataSource = VacantesActivasSource;
            this.GridView_VacantesActivas.DataBind();
            //this.HideUnwantedColumns();          // this shit just wont work!
        }

        private void PoblarGridViewAplicaciones()
        {
            var AplicacionesDeVacante = from adv in new Vacante(Convert.ToInt32(this.GridView_VacantesActivas.Rows[this.GridView_VacantesActivas.SelectedIndex].Cells[1].Text)).Aplicaciones
                                        where adv.SiActiva == true
                                        select adv;

            if (AplicacionesDeVacante.Count() == 0)
            {
                //Lo ideal seria poner la propiedad Visible = true. pero asp se pajarea
                this.Label_MensajeErrorNoAplicacionesEnVacante.Visible = true;
                this.Panel_DatosAplicante.Visible = false;
            }
            else
            {
                this.Label_MensajeErrorNoAplicacionesEnVacante.Visible = false;
            }

            this.GridView_Aplicaciones.DataSource = AplicacionesDeVacante;
            this.GridView_Aplicaciones.DataBind();
            //this.HideUnwantedColumns();          // this shit just wont work!
        }

        protected void GridView_VacantesActivas_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Label_Aplicaciones.Visible = true;
            PoblarGridViewAplicaciones();
        }

        protected void GridView_Aplicaciones_SelectedIndexChanged(object sender, EventArgs e)
        {
            UsuarioEgresado Aplicante = new Aplicacion(Convert.ToInt32(this.GridView_Aplicaciones.Rows[this.GridView_Aplicaciones.SelectedIndex].Cells[1].Text)).Aplicante;

            TextBox_NombreApicante.Text = Aplicante.NombreCompleto;
            TextBox_Carrera.Text = Aplicante.Carrera.Descripcion;
            TextBox_ExperienciaLAboral.Text = Aplicante.AñosDeExperienciaLaboral.ToString();
            TextBox_DetalleExperienciaLaboral.Text = Aplicante.DetalleExperienciaLaboral;
            TextBox_Intereses.Text = Aplicante.Intereses;
            CheckBox_SiBuscaTiempoCompleto.Checked = Aplicante.SiBuscaTiempoCompleto;
            CheckBox_SiVehiculoPropio.Checked = Aplicante.SiVehiculoPropio;

            foreach (Habilidad Habilidad in Aplicante.Habilidades)
            {
                TextBox_Habilidades.Text = TextBox_Habilidades.Text + Habilidad.Descripcion + "\n";
            }

            this.TextBox_Contactos.Text = "";
            foreach (Contacto Contactos in Aplicante.Contactos)
            {
                TextBox_Contactos.Text += Contactos.TipoContacto + " -> " + Contactos.Descripcion + "\n";
            }
            Button_EnviarEmail.Enabled = true;
            this.Panel_DatosAplicante.Visible = true;
        }

        protected void Button_EnviarEmail_Click(object sender, EventArgs e)
        {
            UsuarioEgresado Aplicante = new Aplicacion(Convert.ToInt32(this.GridView_Aplicaciones.Rows[this.GridView_Aplicaciones.SelectedIndex].Cells[1].Text)).Aplicante;
            Envio Propuesta = new Envio(((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).EmpresaProcedencia, 3);

            foreach (Contacto item in Aplicante.Contactos)
            {
                if (item.TipoContacto.Trim() == "Email") Propuesta.EnviarMailSolicitud(item);
            }
        }

        protected void Button_LogOff_Click(object sender, EventArgs e)
        {
            this.Session["UsuarioDeSesion"] = null;

            this.Response.Redirect("../General/Default.aspx");
        }
    }
}
